1. Field of the Invention
This invention relates to a computer control system, and more particularly to a method used in a system for programming a peripheral flash read-only memory (ROM) via an integrated device electronics (IDE) interface.
2. Description of Related Art
Recently, computer industry has been rapidly developed. Its various periphery hardware devices are also accordingly developed. As the computer system is continuously developing, in order to satisfy some new developed specifications or protocols or improve the compatibility with other devices, various related firmware codes are necessary to be updated. This results in that a lot of firmware data/code to control the periphery devices are necessary to be frequently read or updated. The firmware code generally is stored in a flash ROM. The computer system needs a method to be able to rapidly and conveniently program the flash ROM so as to update the firmware code/data.
Currently, several methods are used by a computer system to read the firmware code stored in the flash ROM. In a system disclosed by U.S. Pat. No. 5,603,056, a control program for controlling a hard disk drive (HDD) and a rewrite program for rewriting the control program are stored together in an electrically erasable programmable ROM (EEPROM). Upon entering the rewrite mode, a central processing unit (CPU) in the HDD saves the control program in the flash EEPROM into a random access memory (RAM). The CPU erases the flash EEPROM and restores the rewrite program of the RAM in to the flash EEPROM. The CPU receives a new control program from a host computer and loads it in the flash EEPROM. The erasing of the flash EEPROM and the loading of the new control program are performed by the CPU in accordance with the rewrite program saved in the RAM. In this conventional manner, a small computer system interface (SCSI) connector or an AT attachment (ATA) connector are used to serve as an input/output (I/O) interface and perform a serial communication with the host computer by using unassigned pins of the connectors. Since the used interface is not a general interface, this method cannot generally applied in various types of computer mother boards. Other methods are also disclosed by U.S. Pat. Nos. 5,408,624 and 5,729,683 but they are complicate and also depends on different system type.
Another conventional system using the IDE interface to update firmware code stored in a flash ROM is also proposed. Since the IDE interface is generally used in various periphery devices, the method can have loose restriction. A compact-disk (CD) read-only-memory (ROM), or called CDROM, is an essential periphery device of the computer. A peripheral device, such as a CDROM, is used for descriptions as shown in FIG. 1. In FIG. 1, the system includes a microprocessor 100, which serving as a controller is used to command all components, such as a servo 102 and a decoder 104 of a CDROM. The servo 102 is coupled to a CD 106 to read data stored in the CD 106. The firmware code including, for example, a control program and other information is stored in a flash ROM 108. The firmware code provides instructions for the microprocessor 100 to execute. The CDROM communicates with a host computer 110 through an IDE interface/bus. When the Firmware stored in Flash ROM needs to be updated. In the traditional method, the Flash ROM should be firstly disconnected from the peripheral, then is put into the programming equipment to be re-programmed. After the new Firmware has been successfully written into Flash ROM, it can be plugged into the peripheral again. Due to these complicate process, the traditional method is very inconvenient. Moreover, after products have been shipped to end-users, the traditional method is un-reasonable since most users have no programming equipment.
It is at least an objective of the present invention to provide a method for a computer system to program a flash ROM, which is usually used to store a firmware code, through redefining an ATA task files with respect to an IDE interface. The flash ROM can be directly programmed by a host computer without going through the programming equipment.
It is at least another objective of the present invention to provide a flash controller, which can directly communicate with a host computer through an IDE interface and directly program the flash ROM. The flash controller is independent to device hardware type.
In accordance with the foregoing and other objectives of the present invention, a method for programming a periphery flash ROM is provided. The method includes disabling other access to a flash ROM as a host computer requests to program or update a firmware code in the flash ROM. Several ATA task files in the host computer are redefined, in which the ATA task files usually are defined in ATA specification and are used as register-level communication interface between the host computer and an IDE periphery device. The firmware code from the host is transported through an IDE interface and then is written into the flash ROM through a programming control means, such as a flash controller. The flash controller interprets all IDE interface activities and issues a read/write flash ROM cycle. The flash controller provides a software method, a hardware method, or even a mixed method of software and hardware, to program the flash ROM. For the software method the firmware code is directly written into the flash ROM through the flash controller. For the hardware method, the method uses a buffer, such as a RAM, to store the firmware code if more than one flash ROM cycles are needed in one request. Then, the firmware code stored in the buffer is sequentially written into the flash ROM through the flash controller.
In accordance with the foregoing and other objectives of the present invention, a system for programming a periphery flash ROM is provided. The system includes a host computer, an IDE interface, a flash controller, a flash ROM, and a microprocessor. The flash controller is coupled to the host computer through the IDE interface. The flash ROM and the microprocessor are also coupled to the flash controller. When the system enters a flash ROM programming mode, task files used in the IDE interface are redefined Subsequently, all activities to read/write task files by the host computer will be interpreted with new definitions by the flash controller so that a firmware code from the host computer is written into the flash ROM through the flash controller. After the flash ROM is completely programmed, the task files return to their original definition. The microprocessor will be disabled to access to the flash ROM during the flash ROM programming mode. If several flash ROM programming cycles are needed in one host request, the firmware can be temporarily stored into a buffer, such as a RAM and then sequentially written into the flash ROM through the flash controller. Since the software method may occupy too much time of the IDE interface, resulting in a delay for the other subsequent activities, the hardware method may be a better way to update the firmware code, particularly to a large firmware code.